import ast

from PySide6.QtCore import QObject, Signal
from PySide6.QtGui import Qt

调试模式 = True


class 连接线模型定义(QObject):
    连接线图形项注册信号=Signal(object)
    def __init__(self, 起始接口=None, 结束接口=None, 可删除=True, 关系创建节点=None,连接线模型管理器=None):
        if 起始接口 and 结束接口 and 起始接口.流类型 != 结束接口.流类型:
            if 起始接口.方向== 结束接口.方向:
                raise ValueError("起始接口和结束接口的方向必须不同")
            raise ValueError("起始接口和结束接口的流类型必须相同")
        super().__init__()
        self.连接线模型管理器 = 连接线模型管理器
        self.起始接口 = 起始接口
        self.结束接口 = 结束接口
        self.关系创建节点 = 关系创建节点
        self.可删除 = 可删除
        颜色 = Qt.black  # 默认颜色为黑色
        if 起始接口.流类型 == "数据流":
            颜色 = Qt.green  # 默认颜色为绿色
        elif 起始接口.流类型 == "调用流":
            颜色 = Qt.blue  # 默认颜色为蓝色
        elif 起始接口.流类型 == "控制流":
            颜色 = Qt.red  # 默认颜色为红色
        else:
            print(f"未知流类型{起始接口.流类型}")
        self.图形项=None
        self.连接线图形项注册信号.connect(self.注册连接线图形项)
    def 注册连接线图形项(self, 图形项):
        self.图形项 = 图形项
    def 刷新关系(self):
        if self.图形项:
            if self.起始接口.节点模型.图形项:
                if not self.图形项.scene():
                    #print("不在场景内")
                    self.图形项.setParentItem(self.结束接口.节点模型.所属节点模型管理器.容器)
                self.图形项.连接线图形项刷新()  # 通知相关的连接线更新
            # else:
            #     print("起始接口的节点图形项为空")
        else:
            print("连接线图形项为空")
        del self
    def 删除连接线模型(self):
        print("连接线模型删除")
        self.连接线模型管理器.移除连接线模型(self)
        if self.图形项:
            self.图形项.setParentItem(None)
        del self

    def __repr__(self):
        return f"节点关系( 起始接口={self.起始接口}, 结束接口={self.结束接口})"
